package popcorn.ticket.dao;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import popcorn.ticket.entity.Movies;
import popcorn.ticket.entity.MoviesExample;

@Repository
public interface MoviesMapper {
	long countByExample(MoviesExample example);

	int deleteByExample(MoviesExample example);

	int deleteByPrimaryKey(Integer movieid);

	int insert(Movies record);

	int insertSelective(Movies record);

	List<Movies> selectByExample(MoviesExample example);

	Movies selectByPrimaryKey(Integer movieid);

	int updateByExampleSelective(@Param("record") Movies record, @Param("example") MoviesExample example);

	int updateByExample(@Param("record") Movies record, @Param("example") MoviesExample example);

	int updateByPrimaryKeySelective(Movies record);

	int updateByPrimaryKey(Movies record);

	// 查询在映片数
	int selectMoviesNum();

	// 查询今日推荐的影片
	List<Movies> selectMoviesOK();

	// 通过电影编号查询该电影的观看过的人数
	int selMTicketNum(int movieId);

	// 通过电影编号查询该电影的类型
	List<Movies> selMType(int movieId);

	// 查询今日排行的电影
	List<Movies> selMoviesToday();

	// 今日放映的电影（前四名）
	List<Movies> selMoviesTodayFour();

	// 通过编号查电影的分数
	List<Movies> selMScore(int movieId);

	// 根据类型名模糊查询 在映的电影信息
	List<Movies> selMoviesByTypename(String typename);

	// 模糊查询在映的电影信息
	List<Movies> selMoviesByLike(Movies movie);

	// 对在映电影信息根据条件进行排序
	List<Movies> selMoviesByOrder(@Param("factor") String factor);

	// 电影热销榜
	List getListByOrder();

	// 通过电影编号查询电影详细信息
	Movies selMInfo(int movieId);

	// 联想词搜索方法
	List getMoviesWithSearrch(Movies movies);

	// 与联想词搜索相关的全部电影查询，与电影类型有关
	List<Movies> selectMoviesByLikeWithoutMn(@Param("keywords") String keywords, @Param("movies") Movies movies);

	// 与联想词搜索相关的全部电影查询
	List<Movies> selectMoviesByLike(@Param("keywords") String keywords, @Param("movies") Movies movies);

	// 与联想词搜索相关的全部电影查询，与电影类型有关+状态的查询
	List<Movies> selMtypeLikeAndStatus(@Param("keywords") String keywords, @Param("movies") Movies movies,
			@Param("moviestatus") int moviestatus);

	// 与联想词搜索相关的全部电影查询+电影状态的查询
	List<Movies> selMLikeAndStatus(@Param("keywords") String keywords, @Param("movies") Movies movies,
			@Param("moviestatus") int moviestatus);
	
	//获取即将上映的评分排行榜
	List<Movies> selMoviesSoon();


}